/* zlib.h尾部添加#include "zlib-inl.h" */

#if __cplusplus >= 201703L //如果编译器是MSVC,必须添加编译选项 /Zc:__cplusplus 才会正确设置__cplusplus宏
    // C++17 及以上版本 不支持关键字register, 直接强制替换成空
    #define register
#else
    // 旧版本 C++ 支持关键字register
#endif

#include "zutil.h"
#include "zutil.c"  //内过早#include "gzguts.h", 已注释

#include "deflate.h"
#include "deflate.c"

#include "inftrees.c"
#include "inffast.c"

#include "inflate.h"
#include "inflate.c"

#include "infback.c"//内函数重定义:fixedtables(), 宏重定义:PULLBYTE  -> 已关闭

#include "compress.c"

#include "uncompr.c"

#ifdef GZIP
    #undef GZIP			//使用gzlib要定义GZIP,但编译gzlib之前要取消宏定义
#endif

#include "gzlib.c"
#include "gzwrite.c"
#include "gzread.c"
#include "gzclose.c"

//gzlib用完这些宏后,这里必须取消这些宏，过于霸道会取代某些自定义类的open接口,或者取代一些库的标准接口
//这些宏在gzguts.h里面
#ifdef open
    #undef open
#endif

#ifdef read
    #undef read
#endif

#ifdef write
    #undef write
#endif

#ifdef close
    #undef close
#endif

#include "adler32.c"

#include "crc32.c"//源文件件已经#include "crc32.h"

#include "trees.c"//源文件件已经#include "trees.h"